package com.demo.newarchitecture.rn;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.demo.BuildConfig;
import com.demo.newarchitecture.utils.DeviceUtil;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

// https://reactnative.cn/docs/native-modules-android#promises  更多桥接
public class AppModule桥接原生 extends ReactContextBaseJavaModule {

    public AppModule桥接原生() {
        super();
    }

    public AppModule桥接原生(@Nullable ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @NonNull
    @Override
    public String getName() {
        return "App"; // 这个名字对应在了js的NativeModules对象里面了 然后可以App.openGallery调用原生方法，然后重启
    }

    // 告诉js这是一个桥接原生方法(写注释@ReactMethod)
    @ReactMethod
    public void openGallery() {
        if (getCurrentActivity() == null) return;
        DeviceUtil.openGallery(getCurrentActivity());
    }

    // 桥接原生方法带返回的值的
    @ReactMethod
    public void getVersionName(Promise promise) {
        String versionName = BuildConfig.VERSION_NAME;
        if(versionName == null) promise.reject(new Throwable("获取版本失败"));
        else promise.resolve(versionName);
    }
}
